<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title></title>
</head>
<body>

	<script type="text/javascript">
		//1.Object 和 Function,是函数也是对象。在js中，从本质上所谓的函数就是一个对象，既然是对象就有隐式原型，//那么问题是Object函数的隐式原型是什么，Object.__proto__  --> 是什么，function函数的隐式原型是什么
		//对象的隐式原型是它构造函数的显示原型
		//Object.__proto__ === Function.prototype new Function
		//Function.__proto__ 函数的隐式原型是什么 ，函数是怎么被创造的，它怎么可以new 自己
		//可以这样理解，在执行Js引擎之前，	你的Js代码在引擎看来，它不只有你写的这些，而是宿主环境会给你注入一些代码，//其中它会给你注入这样一个代码，系统底层会帮你完成这么一个东西，它不是说直接new出来，我们可以考虑说这个对象Function.//__proto__是系统底层注入的一个对象，而不是说通过后续New出来的一个对象
//
		//Object.prototype.__proto__ = null; 不是所有对象都是Object的实例
		//Function.prototype.__proto__ = Object.prototype

		//原型链的本质就是为了使js实现面向对象编程模式，如何通过原型链来实现面向对象编程模式
		var s1 = {
			name : 'jack',
			age : 18,
			sex : 'male',
			major : 'cs',
			hobby : 'music'
		}

		var s2 = {
			name : 'lucy',
			age : '20',
			sex : 'female',
			hobby : 'english'
		}

		Object.myInstanceOf = function (obj, fun) {
			if(obj == null) return false;
			if (Object.getPrototypeOf(obj) == fun.prototype){
				return true;
			}else {
				return Object.myInstanceOf(Object.getPrototypeOf(obj), fun);	
			}
			//Object.getprototypeOf(obj) -->对象的隐式原型
		}

		console.log(Object.myInstanceOf(s1,Object));

		
		
	</script>

</body>
</html>